﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using KPIS.GERP.GHRMS.MODEL;

namespace KPIS.GERP.GHRMS.IBLL
{
    public interface IPositionBLL
    {
        DataTable ListPositionsNew();
        IList<PositionInfo> ListPositions();
        IList<PositionInfo> ListPositions(string JobSite);
        IList<PositionInfo> ListPositions(string JobSite, string EmployeeType);
        IList<PositionInfo> ListPositionsBySequence(string Sequence);
        IList<PositionInfo> LoadPositionTreeView(Nullable<int> EmpTypeSeq);
        IList<PositionInfo> LoadWorkingTreeView(Nullable<int> EmpTypeSeq);
        IList<TreeViewInfo> LoadPositionJobsites(Nullable<int> EmpTypeSeq, string ParentID);
	    Dictionary<string, string> GetJobSiteAndPositionTypeAndClassByPosition(string positionSeq); 
        EmployeeInfo LoadEmployeeOfPosition(int PositionSeq);
        EmployeeInfo LoadEmployeeOfPosition(string PositionSeq);
        DataTable LoadPositionWorkingJobsites(Nullable<int> EmpTypeSeq, string ParentID);
        DataSet LoadPositions(Nullable<int> Sequence, Nullable<int> EmployeeType, Nullable<int> Jobsite, string SearchText);
        void Insert(string RefNo, string Name, string JobDescription, Nullable<DateTime> DefinedDate
            , Nullable<DateTime> MoneySupportDate, Nullable<double> SalaryQuota, Nullable<double> SalaryMax
            , Nullable<double> SalaryMin, string Field, string Executive, string EmployeeType
            , string JobSite, string PositionType, string Upper, string WorkingUpper, string ClassSpecification, string Class
            , string Status, string Remarks, int CreatedBy); //
        void Update(int Sequence, string RefNo, string Name, string JobDescription, Nullable<DateTime> DefinedDate
            , Nullable<DateTime> MoneySupportDate, Nullable<double> SalaryQuota, Nullable<double> SalaryMax
            , Nullable<double> SalaryMin, string Field, string Executive, string EmployeeType
			, string JobSite, string PositionType, string Upper, string WorkingUpper, string ClassSpecification, string Class
            , string Status, string Remarks, int UpdatedBy); //
        void Delete(int Sequence, int UpdatedBy);
        void UpdateUpper(int Sequence, string Upper, int UpdatedBy);
        void UpdateWorkingUpper(int Sequence, string WorkingUpper, int UpdatedBy);
        void UpdateJobSites(int Sequence, string JobSiteSeq, int UpdatedBy);
        List<WorkOnDuty> SelectWorkOnDuty();
        WorkOnDuty SelectWorkOnDutyById(int wodId);
        WorkOnDuty InsertWorkOnDuty(WorkOnDuty word);
        WorkOnDuty UpdateWorkOnDuty(WorkOnDuty word);
        WorkOnDuty DeleteWorkOnDuty(WorkOnDuty word);
    }
}
